GradleScalaプロジェクトをビルドする的な


概要

build.gradleでScalaのプログラムをビルドするってのを

ちゃんと小さくまとめてなかったので小さくまとめる。



フォルダ構成

本当はGradle標準にあわせたいんだけど、

万が一的な意味でEclipseで触ったりすることを考えてこんな形にしちゃう。

スクリーンショット 2012-07-15 21.46.51.png

フォルダ階層をEclipseのデフォルトに合わせる。

この時点でsrc、testフォルダは空。build.gradleは白紙。



なにはともあれWrapper

自分はTextMate x Gradleな感じなので、

TextMateのGradleプラグイン使うためにまずgradleWrapperを作ってしまう。

以下はずっとbuild.gradleファイルに追記。


apply plugin:"scala"


version = 1.0


task wrapper(type: Wrapper) {
    gradleVersion = version
}

この状態で、gradle wrapper をTerminalとかでやると、

gradlew.shとかexeが作られて、Gradle入ってない人でも楽に拉致できるようになる。

スクリーンショット 2012-07-15 21.52.43.png

終わると、フォルダがこんな感じになってる。

スクリーンショット 2012-07-15 21.54.34.png



srcフォルダの場所を書く

srcフォルダの場所とtestフォルダの場所が、通常のGradleとは違っているので、

書き加える。

sourceSets {
	main {
		scala {
			srcDir 'src'
    		}
	}
	test {
		scala {
			srcDir 'test'
    		}
  	}
}



Dependenciesを書き加える

Scalaのビルドを通すために、依存を書く。

repositories {
	mavenCentral()
}


dependencies {
	scalaTools  (
		[group: "org.scala-lang", name: "scala-compiler",version: "2.9.2"],
		[group: "org.scala-lang", name: "scala-library",version: "2.9.2"]
	)
	
	compile (
		[group: "org.scala-lang", name: "scala-library",version: "2.9.2"]
	)
}


これで、Scalaのコードをsrc内とかtest内に書けば、ビルドできる。



ビルド対象のHello.scala書く

srcフォルダ下にファイル追加

スクリーンショット 2012-07-15 22.02.45.png

Hello.scala

object Hello {
	def main(args: Array[String]) {
		println("necomimi-mode--!!!")
	}
}

趣向が凝らされた至高の文章。


このときのbuild.gradleの全体像

スクリーンショット 2012-07-15 22.07.43.png

わざわざ { } 使って書くこと無いけど、今回は時間ないし眠いので。



コンパイル

Terminalから、 

gradle compileScala


ってやっても良いし、TextMateから

+shift+G
compileScala


ってやってもいい。


Terminalからだと、

スクリーンショット 2012-07-15 22.11.17.png


TextMateからだと、

スクリーンショット 2012-07-15 22.07.33.png

こんな風に表示される。

(実際先にTextMateのほう動かしてしまったのでTerminalの方はもう最新でした的な表示が出てる)


buildフォルダが作られて、classとか出来てる。

testフォルダにテストとか書けば、gradle test から実行できる。



プロジェクト一式

https://github.com/sassembla/SampleScalaGradle

書いてる間に渋谷から横浜に着いた!



駆動方法

cloneしてから、Terminal で、

gradlew compileScala

とかすると、ネットにつながっててJavaが動きさえすれば、動くと思う。